<span class='l l-1 source ocaml'><s class='meta module open ocaml' data-entity-scope='meta.module.open.ocaml'><s class='keyword other ocaml' data-entity-scope='keyword.other.ocaml'>open</s> <s class='support other module ocaml' data-entity-scope='support.other.module.ocaml'>Lexer_flow</s>
</s></span><span class='l l-2 source ocaml'><s class='meta module ocaml' data-entity-scope='meta.module.ocaml'><s class='keyword other module-definition ocaml' data-entity-scope='keyword.other.module-definition.ocaml'>module</s> <s class='entity name type module ocaml' data-entity-scope='entity.name.type.module.ocaml'>Ast</s></s> <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>Spider_monkey_ast</s>
</span><span class='l l-3 source ocaml'><s class='meta module open ocaml' data-entity-scope='meta.module.open.ocaml'><s class='keyword other ocaml' data-entity-scope='keyword.other.ocaml'>open</s> <s class='support other module ocaml' data-entity-scope='support.other.module.ocaml'>Ast</s>
</s></span><span class='l l-4 source ocaml'><s class='meta module ocaml' data-entity-scope='meta.module.ocaml'><s class='keyword other module-definition ocaml' data-entity-scope='keyword.other.module-definition.ocaml'>module</s> <s class='entity name type module ocaml' data-entity-scope='entity.name.type.module.ocaml'>Error</s></s> <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>Parse_error</s>
</span><span class='l l-5 source ocaml'><s class='meta module ocaml' data-entity-scope='meta.module.ocaml'><s class='keyword other module-definition ocaml' data-entity-scope='keyword.other.module-definition.ocaml'>module</s> <s class='entity name type module ocaml' data-entity-scope='entity.name.type.module.ocaml'>SSet</s></s> <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='meta module-reference ocaml' data-entity-scope='meta.module-reference.ocaml'>Set.</s><s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>Make</s><s class='meta paren-group ocaml' data-entity-scope='meta.paren-group.ocaml'>(<s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>String</s>)</s>
</span><span class='l l-6 source ocaml'><s class='meta module ocaml' data-entity-scope='meta.module.ocaml'><s class='keyword other module-definition ocaml' data-entity-scope='keyword.other.module-definition.ocaml'>module</s> <s class='entity name type module ocaml' data-entity-scope='entity.name.type.module.ocaml'>SMap</s></s> <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='meta module-reference ocaml' data-entity-scope='meta.module-reference.ocaml'>Map.</s><s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>Make</s><s class='meta paren-group ocaml' data-entity-scope='meta.paren-group.ocaml'>(<s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>String</s>)</s>
</span><span class='l l-7 source ocaml'>
</span><span class='l l-8 source ocaml'><s class='meta type-definition-group ocaml' data-entity-scope='meta.type-definition-group.ocaml'><s class='meta type-definition ocaml' data-entity-scope='meta.type-definition.ocaml'><s class='keyword other type-definition ocaml' data-entity-scope='keyword.other.type-definition.ocaml'>type</s> <s class='storage type user-defined ocaml' data-entity-scope='storage.type.user-defined.ocaml'>lex_mode </s><s class='punctuation separator type-definition ocaml' data-entity-scope='punctuation.separator.type-definition.ocaml'>=</s>
</span><span class='l l-9 source ocaml'>  <s class='punctuation separator variant-definition ocaml' data-entity-scope='punctuation.separator.variant-definition.ocaml'>|</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>NORMAL_LEX</s>
</span><span class='l l-10 source ocaml'>  <s class='punctuation separator variant-definition ocaml' data-entity-scope='punctuation.separator.variant-definition.ocaml'>|</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>TYPE_LEX</s>
</span><span class='l l-11 source ocaml'>  <s class='punctuation separator variant-definition ocaml' data-entity-scope='punctuation.separator.variant-definition.ocaml'>|</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>JSX_TAG</s>
</span><span class='l l-12 source ocaml'>  <s class='punctuation separator variant-definition ocaml' data-entity-scope='punctuation.separator.variant-definition.ocaml'>|</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>JSX_CHILD</s>
</span><span class='l l-13 source ocaml'></s>
</s></span><span class='l l-14 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>mode_to_string</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> <s class='meta pattern-match ocaml' data-entity-scope='meta.pattern-match.ocaml'><s class='keyword control match-definition ocaml' data-entity-scope='keyword.control.match-definition.ocaml'>function</s><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>
</s></span><span class='l l-15 source ocaml'>  </s><s class='meta pattern-match ocaml' data-entity-scope='meta.pattern-match.ocaml'><s class='keyword control match-definition ocaml' data-entity-scope='keyword.control.match-definition.ocaml'>|</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>NORMAL_LEX</s> <s class='punctuation separator match-definition ocaml' data-entity-scope='punctuation.separator.match-definition.ocaml'>-&gt;</s></s> <s class='string quoted double ocaml' data-entity-scope='string.quoted.double.ocaml'><s class='punctuation definition string begin ocaml' data-entity-scope='punctuation.definition.string.begin.ocaml'>&quot;</s>NORMAL<s class='punctuation definition string end ocaml' data-entity-scope='punctuation.definition.string.end.ocaml'>&quot;</s></s>
</span><span class='l l-16 source ocaml'>  <s class='meta pattern-match ocaml' data-entity-scope='meta.pattern-match.ocaml'><s class='keyword control match-definition ocaml' data-entity-scope='keyword.control.match-definition.ocaml'>|</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>TYPE_LEX</s> <s class='punctuation separator match-definition ocaml' data-entity-scope='punctuation.separator.match-definition.ocaml'>-&gt;</s></s> <s class='string quoted double ocaml' data-entity-scope='string.quoted.double.ocaml'><s class='punctuation definition string begin ocaml' data-entity-scope='punctuation.definition.string.begin.ocaml'>&quot;</s>TYPE<s class='punctuation definition string end ocaml' data-entity-scope='punctuation.definition.string.end.ocaml'>&quot;</s></s>
</span><span class='l l-17 source ocaml'>  <s class='meta pattern-match ocaml' data-entity-scope='meta.pattern-match.ocaml'><s class='keyword control match-definition ocaml' data-entity-scope='keyword.control.match-definition.ocaml'>|</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>JSX_TAG</s> <s class='punctuation separator match-definition ocaml' data-entity-scope='punctuation.separator.match-definition.ocaml'>-&gt;</s></s> <s class='string quoted double ocaml' data-entity-scope='string.quoted.double.ocaml'><s class='punctuation definition string begin ocaml' data-entity-scope='punctuation.definition.string.begin.ocaml'>&quot;</s>JSX TAG<s class='punctuation definition string end ocaml' data-entity-scope='punctuation.definition.string.end.ocaml'>&quot;</s></s>
</span><span class='l l-18 source ocaml'>  <s class='meta pattern-match ocaml' data-entity-scope='meta.pattern-match.ocaml'><s class='keyword control match-definition ocaml' data-entity-scope='keyword.control.match-definition.ocaml'>|</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>JSX_CHILD</s> <s class='punctuation separator match-definition ocaml' data-entity-scope='punctuation.separator.match-definition.ocaml'>-&gt;</s></s> <s class='string quoted double ocaml' data-entity-scope='string.quoted.double.ocaml'><s class='punctuation definition string begin ocaml' data-entity-scope='punctuation.definition.string.begin.ocaml'>&quot;</s>JSX CHILD<s class='punctuation definition string end ocaml' data-entity-scope='punctuation.definition.string.end.ocaml'>&quot;</s></s>
</span><span class='l l-19 source ocaml'>
</span><span class='l l-20 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>lex</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>lex_env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> <s class='meta pattern-match ocaml' data-entity-scope='meta.pattern-match.ocaml'><s class='keyword control match-definition ocaml' data-entity-scope='keyword.control.match-definition.ocaml'>function</s><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>
</s></span><span class='l l-21 source ocaml'>  </s><s class='meta pattern-match ocaml' data-entity-scope='meta.pattern-match.ocaml'><s class='keyword control match-definition ocaml' data-entity-scope='keyword.control.match-definition.ocaml'>|</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>NORMAL_LEX</s> <s class='punctuation separator match-definition ocaml' data-entity-scope='punctuation.separator.match-definition.ocaml'>-&gt;</s></s> token lex_env
</span><span class='l l-22 source ocaml'>  <s class='meta pattern-match ocaml' data-entity-scope='meta.pattern-match.ocaml'><s class='keyword control match-definition ocaml' data-entity-scope='keyword.control.match-definition.ocaml'>|</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>TYPE_LEX</s> <s class='punctuation separator match-definition ocaml' data-entity-scope='punctuation.separator.match-definition.ocaml'>-&gt;</s></s> type_token lex_env
</span><span class='l l-23 source ocaml'>  <s class='meta pattern-match ocaml' data-entity-scope='meta.pattern-match.ocaml'><s class='keyword control match-definition ocaml' data-entity-scope='keyword.control.match-definition.ocaml'>|</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>JSX_TAG</s> <s class='punctuation separator match-definition ocaml' data-entity-scope='punctuation.separator.match-definition.ocaml'>-&gt;</s></s> lex_jsx_tag lex_env
</span><span class='l l-24 source ocaml'>  <s class='meta pattern-match ocaml' data-entity-scope='meta.pattern-match.ocaml'><s class='keyword control match-definition ocaml' data-entity-scope='keyword.control.match-definition.ocaml'>|</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>JSX_CHILD</s> <s class='punctuation separator match-definition ocaml' data-entity-scope='punctuation.separator.match-definition.ocaml'>-&gt;</s></s> lex_jsx_child lex_env
</span><span class='l l-25 source ocaml'>
</span><span class='l l-26 source ocaml'><s class='meta type-definition-group ocaml' data-entity-scope='meta.type-definition-group.ocaml'><s class='meta type-definition ocaml' data-entity-scope='meta.type-definition.ocaml'><s class='keyword other type-definition ocaml' data-entity-scope='keyword.other.type-definition.ocaml'>type</s> <s class='storage type user-defined ocaml' data-entity-scope='storage.type.user-defined.ocaml'>env </s><s class='punctuation separator type-definition ocaml' data-entity-scope='punctuation.separator.type-definition.ocaml'>=</s> <s class='meta record ocaml' data-entity-scope='meta.record.ocaml'><s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>{</s>
</span><span class='l l-27 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>errors</s>          <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='meta paren-group ocaml' data-entity-scope='meta.paren-group.ocaml'>(<s class='meta module type ocaml' data-entity-scope='meta.module.type.ocaml'><s class='support other module ocaml' data-entity-scope='support.other.module.ocaml'>Loc</s><s class='storage type module ocaml' data-entity-scope='storage.type.module.ocaml'>.t</s></s> <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>*</s> <s class='meta module type ocaml' data-entity-scope='meta.module.type.ocaml'><s class='support other module ocaml' data-entity-scope='support.other.module.ocaml'>Error</s><s class='storage type module ocaml' data-entity-scope='storage.type.module.ocaml'>.t</s></s>)</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>list</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>ref</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-28 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>comments</s>        <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='meta module type ocaml' data-entity-scope='meta.module.type.ocaml'><s class='support other module ocaml' data-entity-scope='support.other.module.ocaml'>Comment</s><s class='storage type module ocaml' data-entity-scope='storage.type.module.ocaml'>.t</s></s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>list</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>ref</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-29 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>labels</s>          <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='meta module type ocaml' data-entity-scope='meta.module.type.ocaml'><s class='support other module ocaml' data-entity-scope='support.other.module.ocaml'>SSet</s><s class='storage type module ocaml' data-entity-scope='storage.type.module.ocaml'>.t</s></s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-30 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>lb</s>              <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='meta module type ocaml' data-entity-scope='meta.module.type.ocaml'><s class='support other module ocaml' data-entity-scope='support.other.module.ocaml'>Lexing</s><s class='storage type module ocaml' data-entity-scope='storage.type.module.ocaml'>.lexbuf</s></s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-31 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>lookahead</s>       <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>lex_result</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>ref</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-32 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>last</s>            <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='meta paren-group ocaml' data-entity-scope='meta.paren-group.ocaml'>(<s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>lex_env</s> <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>*</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>lex_result</s>)</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>option</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>ref</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-33 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>priority</s>        <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>int</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-34 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>strict</s>          <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>bool</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-35 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>in_export</s>       <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>bool</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-36 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>in_loop</s>         <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>bool</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-37 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>in_switch</s>       <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>bool</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-38 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>in_function</s>     <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>bool</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-39 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>no_in</s>           <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>bool</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-40 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>no_call</s>         <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>bool</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-41 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>no_let</s>          <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>bool</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-42 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>allow_yield</s>     <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>bool</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-43 source ocaml'>  <s class='comment block ocaml' data-entity-scope='comment.block.ocaml'>(* Use this to indicate that the <s class='comment block string quoted double ocaml' data-entity-scope='comment.block.string.quoted.double.ocaml'>&quot;()&quot;</s> as in <s class='comment block string quoted double ocaml' data-entity-scope='comment.block.string.quoted.double.ocaml'>&quot;() =&gt; 123&quot;</s> is not allowed in
</span><span class='l l-44 source ocaml'>   * this expression *)</s>
</span><span class='l l-45 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>error_callback</s>  <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='meta paren-group ocaml' data-entity-scope='meta.paren-group.ocaml'>(<s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>env</s> <s class='punctuation separator function-return ocaml' data-entity-scope='punctuation.separator.function-return.ocaml'>-&gt;</s> <s class='meta module type ocaml' data-entity-scope='meta.module.type.ocaml'><s class='support other module ocaml' data-entity-scope='support.other.module.ocaml'>Error</s><s class='storage type module ocaml' data-entity-scope='storage.type.module.ocaml'>.t</s></s> <s class='punctuation separator function-return ocaml' data-entity-scope='punctuation.separator.function-return.ocaml'>-&gt;</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>unit</s>)</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>option</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-46 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>lex_mode_stack</s>  <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>lex_mode</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>list</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>ref</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-47 source ocaml'>  <s class='meta record definition ocaml' data-entity-scope='meta.record.definition.ocaml'><s class='source ocaml' data-entity-scope='source.ocaml'>lex_env</s>         <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>:</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>lex_env</s> <s class='storage type ocaml' data-entity-scope='storage.type.ocaml'>ref</s><s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>;</s></s>
</span><span class='l l-48 source ocaml'><s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>}</s></s>
</span><span class='l l-49 source ocaml'></s>
</s></span><span class='l l-50 source ocaml'><s class='comment block ocaml' data-entity-scope='comment.block.ocaml'>(* constructor *)</s>
</span><span class='l l-51 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>init_env</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>lb</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s>
</span><span class='l l-52 source ocaml'>  <s class='keyword other ocaml' data-entity-scope='keyword.other.ocaml'>let</s> lex_env <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> new_lex_env lb <s class='keyword other ocaml' data-entity-scope='keyword.other.ocaml'>in</s>
</span><span class='l l-53 source ocaml'>  <s class='keyword other ocaml' data-entity-scope='keyword.other.ocaml'>let</s> lex_env, lookahead <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> lex lex_env <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>NORMAL_LEX</s> <s class='keyword other ocaml' data-entity-scope='keyword.other.ocaml'>in</s>
</span><span class='l l-54 source ocaml'>  <s class='meta record ocaml' data-entity-scope='meta.record.ocaml'><s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>{</s>
</span><span class='l l-55 source ocaml'>    errors          <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='keyword other storage modifier ocaml' data-entity-scope='keyword.other.storage.modifier.ocaml'>ref</s> <s class='constant language pseudo-variable ocaml' data-entity-scope='constant.language.pseudo-variable.ocaml'>[<s class='meta empty-typing-pair ocaml' data-entity-scope='meta.empty-typing-pair.ocaml'>]</s></s><s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-56 source ocaml'>    comments        <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='keyword other storage modifier ocaml' data-entity-scope='keyword.other.storage.modifier.ocaml'>ref</s> <s class='constant language pseudo-variable ocaml' data-entity-scope='constant.language.pseudo-variable.ocaml'>[<s class='meta empty-typing-pair ocaml' data-entity-scope='meta.empty-typing-pair.ocaml'>]</s></s><s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-57 source ocaml'>    labels          <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='meta module-reference ocaml' data-entity-scope='meta.module-reference.ocaml'>SSet.</s>empty<s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-58 source ocaml'>    lb              <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> lb<s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-59 source ocaml'>    lookahead       <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='keyword other storage modifier ocaml' data-entity-scope='keyword.other.storage.modifier.ocaml'>ref</s> lookahead<s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-60 source ocaml'>    last            <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='keyword other storage modifier ocaml' data-entity-scope='keyword.other.storage.modifier.ocaml'>ref</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>None</s><s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-61 source ocaml'>    priority        <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='constant numeric integer ocaml' data-entity-scope='constant.numeric.integer.ocaml'>0</s><s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-62 source ocaml'>    strict          <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='constant language boolean ocaml' data-entity-scope='constant.language.boolean.ocaml'>false</s><s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-63 source ocaml'>    in_export       <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='constant language boolean ocaml' data-entity-scope='constant.language.boolean.ocaml'>false</s><s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-64 source ocaml'>    in_loop         <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='constant language boolean ocaml' data-entity-scope='constant.language.boolean.ocaml'>false</s><s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-65 source ocaml'>    in_switch       <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='constant language boolean ocaml' data-entity-scope='constant.language.boolean.ocaml'>false</s><s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-66 source ocaml'>    in_function     <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='constant language boolean ocaml' data-entity-scope='constant.language.boolean.ocaml'>false</s><s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-67 source ocaml'>    no_in           <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='constant language boolean ocaml' data-entity-scope='constant.language.boolean.ocaml'>false</s><s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-68 source ocaml'>    no_call         <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='constant language boolean ocaml' data-entity-scope='constant.language.boolean.ocaml'>false</s><s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-69 source ocaml'>    no_let          <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='constant language boolean ocaml' data-entity-scope='constant.language.boolean.ocaml'>false</s><s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-70 source ocaml'>    allow_yield     <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='constant language boolean ocaml' data-entity-scope='constant.language.boolean.ocaml'>true</s><s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-71 source ocaml'>    error_callback  <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>None</s><s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-72 source ocaml'>    lex_mode_stack  <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='keyword other storage modifier ocaml' data-entity-scope='keyword.other.storage.modifier.ocaml'>ref</s> <s class='meta list ocaml' data-entity-scope='meta.list.ocaml'><s class='punctuation definition list begin ocaml' data-entity-scope='punctuation.definition.list.begin.ocaml'>[</s><s class='entity name type variant ocaml' data-entity-scope='entity.name.type.variant.ocaml'>NORMAL_LEX</s><s class='punctuation definition list end ocaml' data-entity-scope='punctuation.definition.list.end.ocaml'>]</s></s><s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-73 source ocaml'>    lex_env         <s class='keyword operator infix ocaml' data-entity-scope='keyword.operator.infix.ocaml'>=</s> <s class='keyword other storage modifier ocaml' data-entity-scope='keyword.other.storage.modifier.ocaml'>ref</s> lex_env<s class='punctuation separator ocaml' data-entity-scope='punctuation.separator.ocaml'>;</s>
</span><span class='l l-74 source ocaml'>  <s class='punctuation definition record ocaml' data-entity-scope='punctuation.definition.record.ocaml'>}</s></s>
</span><span class='l l-75 source ocaml'>
</span><span class='l l-76 source ocaml'><s class='comment block ocaml' data-entity-scope='comment.block.ocaml'>(* getters: *)</s>
</span><span class='l l-77 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>strict</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> env.strict
</span><span class='l l-78 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>lookahead</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> <s class='keyword operator prefix ocaml' data-entity-scope='keyword.operator.prefix.ocaml'>!</s><s class='meta paren-group ocaml' data-entity-scope='meta.paren-group.ocaml'>(env.lookahead)</s>
</span><span class='l l-79 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>lb</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> env.lb
</span><span class='l l-80 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>lex_mode</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> <s class='meta module-reference ocaml' data-entity-scope='meta.module-reference.ocaml'>List.</s>hd <s class='keyword operator prefix ocaml' data-entity-scope='keyword.operator.prefix.ocaml'>!</s><s class='meta paren-group ocaml' data-entity-scope='meta.paren-group.ocaml'>(env.lex_mode_stack)</s>
</span><span class='l l-81 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>lex_env</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> <s class='keyword operator prefix ocaml' data-entity-scope='keyword.operator.prefix.ocaml'>!</s><s class='meta paren-group ocaml' data-entity-scope='meta.paren-group.ocaml'>(env.lex_env)</s>
</span><span class='l l-82 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>last</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> <s class='keyword operator prefix ocaml' data-entity-scope='keyword.operator.prefix.ocaml'>!</s><s class='meta paren-group ocaml' data-entity-scope='meta.paren-group.ocaml'>(env.last)</s>
</span><span class='l l-83 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>in_export</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> env.in_export
</span><span class='l l-84 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>comments</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> <s class='keyword operator prefix ocaml' data-entity-scope='keyword.operator.prefix.ocaml'>!</s><s class='meta paren-group ocaml' data-entity-scope='meta.paren-group.ocaml'>(env.comments)</s>
</span><span class='l l-85 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>labels</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> env.labels
</span><span class='l l-86 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>in_loop</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> env.in_loop
</span><span class='l l-87 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>in_switch</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> env.in_switch
</span><span class='l l-88 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>in_function</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> env.in_function
</span><span class='l l-89 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>allow_yield</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> env.allow_yield
</span><span class='l l-90 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>no_in</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> env.no_in
</span><span class='l l-91 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>no_call</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> env.no_call
</span><span class='l l-92 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>no_let</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> env.no_let
</span><span class='l l-93 source ocaml'><s class='meta function ocaml' data-entity-scope='meta.function.ocaml'><s class='keyword other function-definition ocaml' data-entity-scope='keyword.other.function-definition.ocaml'>let</s> <s class='entity name function ocaml' data-entity-scope='entity.name.function.ocaml'>errors</s> <s class='variable parameter ocaml' data-entity-scope='variable.parameter.ocaml'>env</s> <s class='keyword operator ocaml' data-entity-scope='keyword.operator.ocaml'>=</s></s> <s class='keyword operator prefix ocaml' data-entity-scope='keyword.operator.prefix.ocaml'>!</s><s class='meta paren-group ocaml' data-entity-scope='meta.paren-group.ocaml'>(env.errors)</s></span>
